关于java:maven | 您所在的位置:网站首页 › maven shade plugin本地jar › 关于java:maven |
使用maven-shade-plugin,是否有一种方法可以排除依赖项(未"提供")及其所有传递依赖项? 例如 : 1234567891011 com.example some-artifact 1.0.0-SNAPSHOT ... other dependencies和1) 123456789101112131415161718192021222324252627 org.apache.maven.plugins maven-shade-plugin 2.3 *:* com.example:some-artifact package shade或2) 1234567891011121314151617181920212223242526272829303132 org.apache.maven.plugins maven-shade-plugin 2.3 *:* com.example:some-artifact ** package shade那些不起作用。 com.example:some-artifact的所有传递依赖项都添加到最终的jar中。 请注意,我不想将com.example:some-artifact的范围设置为"提供"。 从配置文件中运行"阴影",并将您的依赖项标记为仅在该配置文件中提供。 例如: 123456789101112131415161718192021222324252627282930313233 shadeProfile com.example some-artifact 1.23 provided org.apache.maven.plugins maven-shade-plugin 2.3 package shade shaded当您运行mvn -PshadeProfile package时,它将按提供的方式对待您的依赖项(因此忽略其依赖项),并且它将使用分类器" shaded",因此您可以将其用作其他模块中的依赖项。 相关讨论 重要的是要知道,如果您对" some-artifact"的一个传递依赖项具有未提供的依赖项(甚至是传递性依赖项),那么shadow插件将包括该构件。 结果,有时该解决方案将无法达到期望的效果。我尝试了以下配置,它也对我有用: 12345678910111213141516171819202122232425262728293031 org.apache.maven.plugins maven-shade-plugin 3.1.0 package shade client-${artifactId} *:* META-INF/* org.apache.jmeter:* com.fasterxml.jackson.core:jackson-databind:* com.fasterxml.jackson.module:jackson-module-scala_2.11:*您必须记住,默认情况下将包括所有依赖项COMPILE。 但是,如果您在artifactSet的includes中设置了工件,则仅考虑那些工件,其余的工件将被排除(依赖关系及其传递性依赖关系) 有时,只包括所需的依赖项比排除所有其余的要容易。 |
CopyRight 2018-2019 实验室设备网 版权所有 |